package com.drug.mingkang.service;

import com.drug.mingkang.model.AuditRecord;
import com.drug.mingkang.model.HqDrug;
import com.drug.mingkang.model.HqDrugtype;
import com.drug.mingkang.model.Specification;
import com.drug.mingkang.model.vo.ExcelDataVO;
import com.drug.mingkang.model.vo.HqDrugVo;
import com.drug.mingkang.utils.ResponseMessage;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 药品表(HqDrug)表服务接口
 *
 * @author wenchangjian
 * @since 2020-08-11 12:00:12
 */
public interface HqDrugService {

    /**
     * 通过ID查询单条数据
     *
     * @param drugId 主键
     * @return 实例对象
     */
    HqDrug queryById(String drugId);

    /**
     * 查询总公司库存预警
     * @param hqDrug
     * @return
     */
    List<HqDrug> findDrugWarning(HqDrug hqDrug);

    /**
     * 查询总公司库存预警数量
     * @param hqDrug
     * @return
     */
    int findDrugWarningCount(HqDrug hqDrug);




    /**
     * 查询行数
     * @return 返回行数
     */
    int selectCount(HqDrug hqDrug);

    /**
     * 查询所有状态为60的药品
     * @param hqDrug
     * @return
     */
    List<HqDrug> findEvery(HqDrug hqDrug);

    int findEveryCount(HqDrug hqDrug);

    List<HqDrug> findEverys(HqDrug hqDrug, String companyId);

    int findEveryCounts(HqDrug hqDrug, String companyId);
    /**
     * 查询多条数据
     *
     * @param page 查询起始位置
     * @param limit 查询条数
     * @return 对象列表
     */
    List<HqDrug> queryAllByLimit(int page, int limit);

    /**
     * 关联类型查询指定行数据
     *
     * @return 对象列表
     */
    List<HqDrug> queryAllByType(HqDrug hqDrug);

    /**
     * 根据类型名称批量查询类型id
     * @param list
     * @return
     */
    List<HqDrugtype> getItermByList(List<String> list);

    /**
     * 新增数据
     *
     * @param hqDrug 实例对象
     * @param file 图片
     * @param specification 说明书
     * @return 实例对象
     */
    HqDrug insert(HqDrug hqDrug, MultipartFile file,Specification specification);

    /**
     * 批量增加
     * @param list
     * @return
     */
    int insertBatch(List<ExcelDataVO> list);

    /**
     * 修改数据
     *
     * @param hqDrug 实例对象
     * @param file 图片
     * @return 实例对象
     */
    HqDrug update(HqDrug hqDrug, MultipartFile file);

    /**
     * 通过主键删除数据
     *
     * @param drugId 主键
     * @return 是否成功
     */
    boolean deleteById(String drugId);

    /**
     * 查询多条药品类型数据
     *
     * @return 对象列表
     */
    List<HqDrugtype> selectByType();

    /**
     * 根据药品id查询说明书
     * @param id 药品id
     * @return 实例对象
     */
    Specification queryBySpe(String id);

    /**
     * 修改说明书
     * @param specification
     * @return
     */
    Specification updateSep(Specification specification);



    /**
     * 通过实体作为筛选条件查询
     * @param hqDrugVo
     * @return
     */
    List<HqDrug> fqueryAll(HqDrugVo hqDrugVo);

    /**
     *查询行数
     * @param hqDrugVo
     * @return
     */
    int fcount(HqDrugVo hqDrugVo);

    /**
     * 修改审核状态
     * @param drugId
     * @return
     */
    int fupdate(String drugId);

    /**
     * 修改药品审核状态
     * @param hqDrug
     * @param auditRecord
     * @param session
     * @return
     */
    ResponseMessage updateIsva(HqDrug hqDrug, AuditRecord auditRecord, HttpSession session);



    /**
     * 查询小于库存预警的药品
     * @param hqDrugVo
     * @return
     */
    List<HqDrug> addPurchasePlan(HqDrugVo hqDrugVo);


    /**
     * 查询小于库存预警药品的行数
     * @param hqDrugVo
     * @return
     */
    int addPurchasePlanCount(HqDrugVo hqDrugVo);
}